#include <iostream>
#include <stack>
using namespace std;

bool check(int* sz1, int n1, int* sz2, int n2) {
	stack<int> data;
	int push = 0;
	int pop  = 0;
	bool ret = true;

	while (pop < n2) {
		if (data.size()==0 || sz2[pop] != data.top()) {
			while (sz1[push]!=sz2[pop] && push<n1) 
				data.push(sz1[push++]);

			if (push >= n1) {
				ret = false;
				break;
			}
			else
				push++;
		}
		else {
			data.pop();
		}

		pop++;				
	}

	return ret;
}

//int main() {
//	int sz1[] = {1,2,3,4,5};
//	int sz2[] = {4,5,1,2,3};
//	int sz3[] = {5,4,3,2,1};
//	int sz4[] = {5,4,1,2,3};
//	int sz5[] = {4,5,3,2,1};
//
//	bool ret1 = check(sz1, 5, sz2, 5);
//	bool ret2 = check(sz1, 5, sz3, 5);
//	bool ret3 = check(sz1, 5, sz4, 5);
//	bool ret4 = check(sz1, 5, sz5, 5);
//
//	return 0;
//}